package com.example.myapplication

import android.content.Intent
import android.os.Bundle
import android.os.SystemClock
import android.view.View
import android.widget.Toast
import androidx.appcompat.app.AppCompatActivity
import androidx.databinding.DataBindingUtil
import com.example.myapplication.databinding.Kotlin1Binding
import com.example.myapplication.retrofit.TestRetrfitActivity
//import com.example.myapplication.track.TestTraceMainActivity
import com.orhanobut.logger.Logger
import kotlinx.coroutines.*

/**
 * 类描述:
 * 创建人:   tangchao$
 * 创建时间: 2021/6/20$ 8:08 PM$
 * 联系方式: 419704299@qq.com
 * 修改人:   tangchao$
 * 修改时间: 2021/6/20$ 8:08 PM$
 * 修改备注:  [说明本次修改内容]
 */
class KotlinActivity : AppCompatActivity(), View.OnClickListener {
    var bind: Kotlin1Binding? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        bind = DataBindingUtil.setContentView(this, R.layout.kotlin1)
        bind!!.onClickListener = this
        coroutines0()
        coroutines1()
        coroutines3()
    }

    private fun coroutines3() {
        val viewmodelJob = Job()
        val coroutineScope = CoroutineScope(Dispatchers.Main + viewmodelJob)
        coroutineScope.launch {
            var aaa = withContext(Dispatchers.IO)
            {
                delay(10000)

            }


            Logger.d("KotlinActivity===coroutines3: " + aaa);
            viewmodelJob.cancel()
        }
    }

    private fun coroutines0() {
        runBlocking {
            getImage()
        }
    }

    suspend fun getImage2(): Any {
        withContext(Dispatchers.IO) {
            getImage3()
        }
        return "1"
    }

    suspend fun getIm4() = withContext(Dispatchers.IO) {

    }

    private fun getImage3(): Any {
        return "3"
    }

    private fun getImage(): Any {
        return "1"
    }

    fun coroutines1() {
        GlobalScope.launch { // 在后台启动一个新的协程并继续

            delay(1000L) // 非阻塞的等待 1 秒钟（默认时间单位是毫秒）
            println("World!") // 在延迟后打印输出
        }
//        bind?.textView3?.text="Hello"
        Thread.sleep(2000L) // 阻塞主线程 2 秒钟来保证 JVM 存活

        Logger.d("KotlinActivity===coroutines1: ");

    }

    fun test1() {
//    而如果使用协程，可以直接把两个并行请求写成上下两行，最后再把结果进行合并即可：
//    coroutineScope.launch(Dispatchers.Main) {
//        //            👇  async 函数之后再讲
//        val avatar = async { api.getAvatar(user) }    // 获取用户头像
//        val logo = async { api.getCompanyLogo(user) } // 获取用户所在公司的 logo
//        val merged = suspendingMerge(avatar, logo)    // 合并结果
//        //                  👆
//        show(merged) // 更新 UI
//    }

    }

    override fun onClick(v: View?) {
//        Intent(this, TestTraceMainActivity::class.java).apply {
//            startActivity(this)
//        }

        Intent(this, TestRetrfitActivity::class.java).apply {
            startActivity(this)
        }
    }


}